#不同的数据类型在内存中的存放1.字符串和数字(不可修改)：赋值，深浅拷贝无意义，因为它永远指向同一个地址
# 2.可变类型：
#深浅拷贝
#1.赋值
#n1=5#赋值知识创建一个变量，该变量指向原来的内存地址
#n2=n1
#print(id(n1),id(n2)) 地址相同
n1={"k1":"王贝贝","k2":18,"k3":["张家玮",13]}
#赋值
n2=n1
n1["k1"]="李慧旺"
#print(n1)
#print(n2)
n1["k3"][0]="小石头"
print(n1,id(n1))#
print(n2,id(n2))#n1,n2 id 相同
#浅拷贝:在内存里只额外创建了第一层数据("[k1]").不会改变它的值,后面的还是会共用
import copy
n1={"k1":"王贝贝","k2":18,"k3":["张家玮",13]}
n3=copy.copy(n1)
n1["k1"]="尚未鹏"
print(n1,id(n1))
print(n3,id(n3))
n1["k3"][0]="张庆"
print(n1,id(n1))
print(n3,id(n3))
#深拷贝
n1={"k1":"王贝贝","k2":18,"k3":["张家玮",13]}
n4=copy.deepcopy(n1)
n1["k1"]="欧汉文"
print(n1,id(n1))
print(n4,id(n4))
n1["k3"][0]="张毅华"
print(n1,id(n1))
print(n4,id(n4))
import copy
a = [1,2,3,4,['a','b']]

b = a					# 赋值
c = a[:]				# 浅拷贝
d = copy.copy(a)		# 浅拷贝
e = copy.deepcopy(a)	# 深拷贝

a.append(5)
a[4].append('c')

print('a=',a,id(a))
print('b=',b,id(b))
print('c=',c,id(c))

print('d=',d,id(d))
print('e=',e,id(e))

a='s'
b=a
print(a is b,id(a),id(b))